Software applications are commonly implemented as multi-tier applications based on modular components executing within a software container application. These container-component applications provide advantages in development, portability, and scalability. Container applications can handle transactions, security, and component management functions, allowing component developers to focus on the specific functionality implemented by their component. Additionally, containers can coordinate between multiple components and synchronize behaviors by communicating concurrently with each of its components.
Before these advantages can be realized, an effective communication standard must be established between container application and its components. This can be a challenge, since both components and containers may be any one of a number of different object types. For example, a component may be implemented as a simple HTML page, a web-based object, or an instance of an application object. For any web-based component, the container might be another web page, or a desktop container application. One previous solution for the communication difficulties involves the use of containers with native components. When a desktop container application includes native components designed specifically for use within that container, these so-called “smart” components can be tightly integrated into the container environment. For example, a smart component could be placed directly into a flex sheet of a container instance (e.g., as a tile or tab in the container window), rather than started in a separate pop-up window. Similarly, the component can support more robust functionality and can be fully integrated into the container's flex paradigm.
However, web-based components cannot be tightly integrated into containers like native smart components. Thus, web-based components in typical container architectures often support limited functionality and provide a less coherent user experience. Additionally, as mentioned above, native smart components running within a container must often be designed specifically for the particular container application. As a result, smart components are often not operable within other containers, negating many of the primary advantages of a container-component software application.
Accordingly, there remains a need for a system of communication between a container and component in a multi-tiered software application.